Package com.iqbon.jcms.service.quartz

Source Code of com.iqbon.jcms.service.quartz.ParseModelJob

package com.iqbon.jcms.service.quartz;

import java.io.IOException;
import java.util.List;

import org.apache.log4j.Logger;
import org.quartz.Job;
import org.quartz.JobDetail;
import org.quartz.JobExecutionContext;
import org.quartz.JobExecutionException;

import com.iqbon.jcms.domain.Model;
import com.iqbon.jcms.domain.Quartz;
import com.iqbon.jcms.service.ModelService;
import com.iqbon.jcms.util.BeanFactory;
import com.iqbon.jcms.util.NotFoundException;

public class ParseModelJob implements Job {

  private static final Logger logger = Logger.getLogger(ParseModelJob.class);

  @Override
  public void execute(JobExecutionContext context) throws JobExecutionException {
    QuartzService quartzService = (QuartzService) BeanFactory.getBean("quartzService");
    ModelService modelService = (ModelService) BeanFactory.getBean("modelService");
    JobDetail jobDetail = context.getJobDetail();
    String jobName = jobDetail.getKey().getName();
    if (String.valueOf(Quartz.runningStatus.running.ordinal()).equals(
        quartzService.getQuartzStatus(jobName))) {//如果是正在运行状态
      logger.warn("上一个调度任务" + jobName + "正在运行,本次调度运行跳过。");
      return;
    } else {
      quartzService.setQuartzStatus(jobName, Quartz.runningStatus.running.ordinal());
      long start = System.currentTimeMillis();
      logger.info("开始刷新文章");
      quartzService.setQuartzStatus(jobName, Quartz.runningStatus.stop.ordinal());
      String refresh = jobDetail.getJobDataMap().getString(Quartz.JOB_FRESH_MINUTE);
      List<String> modelIdList = modelService.getNeedPublishModelByRefresh(refresh);
      for (String modelName : modelIdList) {
        try {
          logger.info("刷新模板" + modelName);
          Model model = modelService.getModelInfoByModelName(modelName);
          modelService.publishModelContent(model);
        } catch (IOException e) {
          logger.error(modelName + "模板刷新失败", e);
          logEnd(start, jobName);
          quartzService.setQuartzStatus(jobName, Quartz.runningStatus.stop.ordinal());
        } catch (NotFoundException ne) {
          logger.error(modelName + "模板已经被删除", ne);
          logEnd(start, jobName);
          quartzService.setQuartzStatus(jobName, Quartz.runningStatus.stop.ordinal());
        }
      }
      logEnd(start, jobName);
      quartzService.setQuartzStatus(jobName, Quartz.runningStatus.stop.ordinal());
    }
  }

  /**
   * 输出结束日志
   * @param jobName
   */
  private void logEnd(long start, String jobName) {
    long end = System.currentTimeMillis();
    logger.info(jobName + "刷新完毕,耗时:" + (end - start) + "ms");
  }
}
TOP

Related Classes of com.iqbon.jcms.service.quartz.ParseModelJob

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.